int a[10],*p=a;p++;p++之后是.............

来源:百度知道 编辑:UC知道 时间:2024/05/07 19:58:06
int a[10],*p=a;p++;p++之后是指向数组的下一个元素,还是内存的址加一?
我问的问题有毛病.........
我要问的是p里的值加一还是加上能使指针指向下一个元素的数

内存地址 按照 int类型的递进
////////////////
加上指针指向下一个元素的数啊 就是指针再数组元素之间的递进啊。。

既指向下一个元素
同时地址也是int类型的递进

是指向下一个元素,p的地址是不变的,它的值,也就是所指向数据内存地址按int类型的递加

内存地址加一!!
//如果是元素的话应该这样表示:
*p=a[i].这时p指向的是数组内的元素,而*p=a意思是p里面的值是数组a的首地址,p自己本身也占有一定的内存,也占有一个地址,这个地址和数组a的首地址并不连续.p++之后p与数组a就没有什么关系了//

//如a[]={1,2,3,};
则a[0]=1,a[1]=2,a[2]=3;
假设a[0]的地址是 0f00 所以a的首地址是也为 0f00 ,
而*p指向了数组a,那么p里面的值就是 0f00 ,
而p本身也占有一定的内存,它的地址由系统自动分配,
假设是 0fa0 这个地址和a的地址是不连续的,
p++之后p的地址就变成了 0fa2 ,
而p的值(也就是"0fa2"这个地址里面的值)这时候并没有谁赋进里面,
所以这时和数组a就没有什么关系了//

我也考虑过这个问题,其实这2种情况都是
怎么说呢,数组的地址本来就是连续的
假如a[0]的地址是2001,那么a[1]的地址就是2002,如果p++了,那么p就是指向了a[1],而内存的地址也加了1,这样说懂了把^_^

p++ 是指向下一个地址,*P就是取地址中的值了